کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Java – ThreadGroup در پردازش موازی در Java

آموزش Java – ThreadGroup در پردازش موازی در Java

Java به توسعه دهنده این امکان را می دهد تا چندین thread را در یک آّبجکت واحد بگنجاند. از این طریق می توان به راحتی گروهی از thread ها را با فراخوانی تنها یک تابع معلق (suspend()) کرد، از سر گرفت (resume()) یا متوقف (interrupt()) نمود.

نکته:

متدهای suspend()، resume() و stop() اکنون منسوخ می باشند.

برای ایجاد آبجکت thread group باید کلاس java.lang.ThreadGroup را پیاده سازی کرد.

توابع سازنده ی (Constructor) کلاس ThreadGroup

کلاس ThreadGroup دو تابع سازنده به شرح زیر دارد:

شماره ی تابع
تابع سازنده
شرح کاربرد
1
ThreadGroup(String name)
این تابع یک thread group جدید با اسم ارسال شده به عنوان آرگومان ایجاد می کند.
2
ThreadGroup(ThreadGroup parent, String name)
یک thread group جدید با اسم ارسال شده به عنوان آرگومان در threadgroup پدر (پارامتر ThreadGroup parent) ایجاد می کند.

متدهای پرکاربرد کلاس ThreadGroup

کلاس ThreadGroup تعداد زیادی متد دارد. در زیر لیستی از پرکاربردترین آن ها همراه با شرح هر یک ارائه شده است:

شماره ی متد
متد
شرح
1
int activeCount()
تعداد thread هایی که در آبجکت thread group جاری در حال اجرا و فعال هستند را در قالب عدد صحیح برمی گرداند.
2
int activeGroupCount()
تعداد threadgroup های فعال در thread group جاری را در قالب عدد صحیح برمی گرداند.
3
void destroy()
Thread group جاری و تمامی thread group های زیرشاخه و عضو آن را از حافظه پاک می کند.
4
String getName()
اسم تخصیص یافته به Thread group جاری را برمی گرداند.
5
ThreadGroup getParent()
Thread group پدر group جاری را برمی گرداند.
6
void interrupt()
تمامی thread های موجود در thread group جاری را همزمان متوقف می سازد.
7
void list()
اطلاعات thread group فعلی را در خروجی چاپ می کند.

در زیر نحوه ی قرار دادن چند thread در یک آبجکت واحد (thread group ای به نام tg1) را مشاهده می کنید.

ThreadGroup tg1 = new ThreadGroup("Group A");   
Thread t1 = new Thread(tg1,new MyRunnable(),"one");     
Thread t2 = new Thread(tg1,new MyRunnable(),"two");     
Thread t3 = new Thread(tg1,new MyRunnable(),"three");    

همان طور که مشاهده می کنید، هر سه thread عضو یک thread group می باشند. در اینجا tg1 اسم آبجکت thread group میزبان بوده، MyRunnable کلاسی است که اینترفیس Runnable را پیاده سازی می کند و پارامترهای "one"، "two" و "three" اسم thread های ایجاد شده می باشد.

حال می توان با یک خط کد هر سه thread نام برده را متوقف نمود.

Thread.currentThread().getThreadGroup().interrupt();  

مثال کاربردی از پیاده سازی ThreadGroup و گروه بندی thread ها

فایل: ThreadGroupDemo.java

public class ThreadGroupDemo implements Runnable{  
    public void run() {  
          System.out.println(Thread.currentThread().getName());  
    }  
   public static void main(String[] args) {  
      ThreadGroupDemo runnable = new ThreadGroupDemo();  
          ThreadGroup tg1 = new ThreadGroup("Parent ThreadGroup");  
                      Thread t1 = new Thread(tg1, runnable,"one");  
          t1.start();  
          Thread t2 = new Thread(tg1, runnable,"two");  
          t2.start();  
          Thread t3 = new Thread(tg1, runnable,"three");  
          t3.start();  
          System.out.println("Thread Group Name: "+tg1.getName());  
         tg1.list();  
    }  
   }  

خروجی:

one
two
three
Thread Group Name: Parent ThreadGroup
java.lang.ThreadGroup[name=Parent ThreadGroup,maxpri=10]
Thread[one,5,Parent ThreadGroup]
Thread[two,5,Parent ThreadGroup]
Thread[three,5,Parent ThreadGroup]
1396/08/19 2815 1215
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...